package main

import (
	"GORM_Demo04/part08/MyPojo"
	"fmt"
	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mysql"
)

/*	常用方法

	【1】First：按照条件查询，并且升序排列，查询出一条记录
	【2】FirstOrCreate:有数据就查询出来，没有就创建一条记录
	【3】Last：按照条件查询，并且降序排列，查询出一条记录
	【4】Take：按照条件查询，查询出一条记录
	【5】Find:按照条件查询*/

func main() {
	db, err := gorm.Open("mysql", "root:123456@tcp(192.168.11.189:3306)/lztest?charset=utf8&parseTime=True&loc=Local")

	if err != nil {
		panic(err)
	}
	defer db.Close()

	db.LogMode(true)

	//db.CreateTable(&MyPojo.User{})

	/*	db.Create(&MyPojo.User{
		UName: "张三",
		UAge:  22,
	})*/

	/*	【1】First：按照条件查询，并且升序排列，查询出一条记录
		【2】FirstOrCreate:有数据就查询出来，没有就创建一条记录
		【3】Last：按照条件查询，并且降序排列，查询出一条记录
		【4】Take：按照条件查询，查询出一条记录
		【5】Find:按照条件查询*/

	//var user MyPojo.User

	//【1】First：按照条件查询，并且升序排列，查询出一条记录
	/*//SELECT * FROM `users`  WHERE (uid= 1) ORDER BY `users`.`uid` ASC LIMIT 1
	db.First(&user, "uid= ?", 1)*/

	/*SELECT * FROM `users`  WHERE (`users`.`uid` = 1) ORDER BY `users`.`uid` ASC LIMIT 1
	db.First(&user, 1)*/

	/*//SELECT * FROM `users`  WHERE (uid = 1) ORDER BY `users`.`uid` ASC LIMIT 1
	db.Where("uid = ?", 1).First(&user)*/

	//【2】FirstOrCreate:有数据就查询出来，没有就创建一条记录
	/*user = MyPojo.User{
		UName: "李四",
		UAge:  32,
	}
	//db.FirstOrCreate(&user, "uid =?", 1)
	db.FirstOrCreate(&user, "uid =?", 2)

	fmt.Println(user)*/

	//【3】Last：按照条件查询，并且降序排列，查询出一条记录
	/*//SELECT * FROM `users`   ORDER BY `users`.`uid` DESC LIMIT 1
	db.Last(&user)*/

	//【4】Take：按照条件查询，查询出一条记录
	/*//SELECT * FROM `users`  WHERE (`users`.`uid` = 1) LIMIT 1
	db.Take(&user, 1)*/

	//【5】Find:按照条件查询
	//SELECT * FROM `users`  WHERE (`users`.`uid` IN (1,2))
	var user []MyPojo.User
	user_id_arr := []int{1, 2}
	db.Find(&user, user_id_arr)

	fmt.Println(user)
}
